#ifndef MONO_PARSER_PROPERTY_TREE_PARSER_H_
#define MONO_PARSER_PROPERTY_TREE_PARSER_H_

#include <mono/parser/property_node.h>
#include <mono/parser/simple_tokenizer.h>
namespace mono {

enum PropertyTreeTokens {
	PropertyTokenBlockStart = TokenUser,
	PropertyTokenBlockEnd,
	PropertyTokenEOL,
};

class PropertyTreeParser {
public:
	PropertyNodePtr parse(const std::string & input);

private:
	bool parseBlock(PropertyNodePtr & node);
	void addLine(const std::vector<std::string> & line, PropertyNodePtr & node) const;
	
	std::vector<Token>      _tokens;
	size_t                  _currentToken;
	size_t                  _braceCount;
};
}

#endif // !CONFIG_PROPERTYTREEPARSER_H
